
import VueRouter from 'vue-router'; // 导入VueRouter，用于创建和管理Vue应用的路由

const routes = [ // 定义路由数组，包含所有路由配置
    {
        path:'/', // 路由的路径，这里是根路径
        name:'login', // 路由的名称，用于编程式导航
        component:()=>import('../components/Login') // 路由对应的组件，使用动态导入
    },
    {
        path:'/Index', // 路由的路径，这里是/Index
        name:'index', // 路由的名称，用于编程式导航
        component:()=>import('../components/Index'), // 路由对应的组件，使用动态导入
        children:[ // 子路由数组，用于定义嵌套路由
            {
                path:'/Home', // 子路由的路径，这里是/Home
                name:'home', // 子路由的名称
                meta:{ // 路由元信息，可以用于存储额外的路由信息
                    title:'首页' // 路由标题
                },
                component:()=>import('../components/Home') // 子路由对应的组件，使用动态导入
            },
            /*{
                path:'/Admin',
                name:'admin',
                meta:{
                    title:'管理员管理'
                },
                component:()=>import('../components/admin/AdminManage.vue')
            },
            {
                path:'/User',
                name:'user',
                meta:{
                    title:'用户管理'
                },
                component:()=>import('../components/user/UserManage.vue')
            },*/
        ]
    }
]

const router = new VueRouter({ // 创建VueRouter实例
    mode:'history', // 使用HTML5 History模式
    routes // 传入路由配置
})

export function resetRouter() { // 导出一个函数，用于重置路由
    router.matcher = new VueRouter({ // 重置matcher属性
        mode:'history',
        routes: [] // 重置路由配置为空数组
    }).matcher
}

const VueRouterPush = VueRouter.prototype.push // 保存VueRouter原型上的push方法
VueRouter.prototype.push = function push (to) { // 重写VueRouter原型上的push方法
    return VueRouterPush.call(this, to).catch(err => err) // 捕获并返回push方法中的错误
}
// 还提供了一个resetRouter函数用于重置路由，以及重写了VueRouter原型上的push方法以处理路由跳转中可能出现的错误。
export  default router; // 导出router实例，作为默认导出